Evaluación de la conectividad ecológica en el corregimiento de Santa Elena, Antioquia¶

Autor: Yina Sofía Racinez Jaramillo

yracinez@unal.edu.co

Universidad Nacional de Colombia Facultad de Minas Posgrado en Aprovechamiento de Recursos Hidráulicos

Código creado como ejercicio académico para el curso de Análisis Geoespacial

GitHub

Resumen¶

Introducción¶

La creciente fragmentación del paisaje debido a la expansión urbana y la transformación de hábitats naturales plantea desafíos significativos para la conservación de la biodiversidad y el mantenimiento de los procesos ecológicos. En particular, la conectividad ecológica ha surgido como un concepto clave en la planificación y gestión de paisajes, ya que desempeña un papel fundamental en la viabilidad a largo plazo de las poblaciones y en la restauración de los ecosistemas degradados. En el contexto del corregimiento de Santa Elena, Antioquia, cuya superficie de bosques se encuentran fuertemente perturbados y con un alto grado de de desconexión entre ellos, en particular por encontrarse embebidos en una matriz de tierras urbanizadas, tierras dedicadas a a diferentes actividades de producción silvícola y agropecuaria, y tierras de reciente suburbanización (Colorado et al., 2017). No obstante, los bosques de este corregimiento cumplen funciones importantes en términos de recreación para la población metropolitana, así como para la regulación hídrica de áreas abastecedoras de acueductos de una población rural significativa (Alcaldía de Medellín, 2014). Es por ello que la evaluación de la conectividad ecológica se convierte en una prioridad para garantizar la conservación de su patrimonio natural y la prestación de bienes y servicios ecosistémicos. El objetivo de este estudio es llevar a cabo una evaluación de la conectividad ecológica en el corregimiento de Santa Elena, utilizando herramientas de ecología del paisaje y análisis espaciales, a partir de las cuales se pueden identificar los corredores de conectividad ecológica, que a su vez permiten evaluar la restricciones al movimiento de las especies y determinar las áreas prioritarias para la restauración y conservación. Con este estudio se pretende proporcionar información para el diseño de estrategias de conservación y restauración que promuevan la conectividad ecológica en el corregimiento de Santa Elena. Los resultados obtenidos ayudarán a orientar la toma de decisiones en la planificación territorial, la gestión de áreas protegidas y la implementación de medidas de manejo del paisaje que contribuyan a mantener los procesos ecológicos y preservar la biodiversidad en la región.

Materiales y métodos¶

Insumos¶

  1. Coberturas de la tierra: Corresponde con la clasificación realizada por Área Metropolitana del Valle de Aburrá -AMVA- escala 1:25.000
  2. Vías: Obtenidas a partir de la cartografía base del Área Metropolitana del Valle de Aburrá, y complementadas a partir de imágenes satelitales (Google)
  3. Drenajes: Obtenidas a partir de la cartografía del Plan de Ordenación y Manejo de la Cuenca Hidrográfica del río Aburrá-POMCA del Área Metropolitana del Valle de Aburrá

Configuración de ambiente de trabajo¶

Se realizó la configuración del ambiente de trabajo para análisis geoespacial mediante la instalación del Paquete Geospatial de python, desarrollado por Qiusheng Wu, e instalado siguiendo los pasos dados por el autor en el siguiente video, clic aquí.

También se instaló la librería PyLandStats para estimar métricas de paisaje y finalmente se importaron las librerías necesarias para el desarrollo del ejercicio académico

In [ ]:
# importar las librerias para el desarrollo del estudio
import os # libreria para manejo de rutas de archivos
os.environ['USE_PYGEOS'] = '0' # para evitar advertencia pygeos deprecate y usar shapely por defecto
import geopandas as gpd # libreria para manejo de datos vectoriales
import pandas as pd
import fiona # libreria para manejo del .gpkg
import matplotlib.pyplot as plt # libreria para graficas
import seaborn as sns # libreria para graficas
import rasterio # libreria para manejo de datos raster
import pylandstats as pls

# definir estilo para graficas
plt.style.use('seaborn')
Module c:\Users\Sofi\miniconda3\envs\geospatial\lib\site-packages\pylandstats\landscape.py has not been compiled for Transonic-Numba

Lectura de datos¶

Preparación para lectura de datos¶

In [ ]:
# nombre del geopackage con datos de entrada
nombre_gpkg_entrada = 'insumos_base.gpkg'

# ruta base para unir luego con gpkg, img y raster
ruta_base = os.getcwd()

# ruta a geopackage de datos de entrada
gpkg_entrada = os.path.join(ruta_base,nombre_gpkg_entrada)

Lectura de datos¶

In [ ]:
# Se listan las capas del gpkg
capas = fiona.listlayers(gpkg_entrada)
capas
Out[ ]:
['cob_amva_25k',
 'vias_pg',
 'limites_corregimiento',
 'sectores_santa_elena',
 'drenajes_ln']
In [ ]:
# Cargar capas del gpkg
gdf_cob = gpd.read_file(gpkg_entrada, layer='cob_amva_25k') # Lee la capa de coberturas
gdf_vias = gpd.read_file(gpkg_entrada, layer='vias_pg') # Lee la capa de vias
gdf_sectores = gpd.read_file(gpkg_entrada, layer='sectores_santa_elena') # Lee la capa de sectores de Santa Elena
gdf_drenajes = gpd.read_file(gpkg_entrada, layer='drenajes_ln') # Lee la capa de drenajes
gdf_limite = gpd.read_file(gpkg_entrada, layer='limites_corregimiento') # Lee la capa de limites del corregimiento
In [ ]:
# obtener nombre de columnas de la capa sectores
gdf_sectores.columns
Out[ ]:
Index(['CODIGO', 'NOMBRE', 'Area_km2', 'geometry'], dtype='object')

Área de estudio¶

Santa Elena es uno de los cinco (5) corregimientos que tiene el territorio rural de Medellín. Abarca un total de 74,15 km2. Se localiza en el oriente de la ciudad, Santa Elena sirve de límite natural entre los Valles de Aburrá, que tiene al río Medellín como eje estructurante del paisaje, y San Nicolás, por donde discurre el río Negro hacia el Valle del Magdalena, principal río del país. El corregimiento está divido político-administrativamente en 11 veredas, su población aproximada es de 18.000 personas, y las principales actividades económicas desarrolladas son agropecuarias, silvícolas, y de servicios asociados a la suburbanización y el turismo (Grupo HTM-Municipio de Medellín, 2009). El territorio se encuentra distribuido en once sectores correspondientes a: Barro Blanco, El Cerro, El Llano, El Plan, El Placer, Las Palmas, Mazo, Media Luna, Piedra Gorda, Piedras Blancas-Matasano y Santa Elena sector central. El sector Piedras Blancas-Matasano ocupa el 30% del área total del corregimiento, seguido de Las Palmas con un 21,44%, Media Luna con el 12,73%, El Pan con 8,33% y Mazo con 6,76%, el resto de sectores abarcan menos del 5% del total del área, tal y como se muestra a continuación:

In [ ]:
# se agrega columna con proporcion de area por sector y se muestra en tabla
gdf_sectores["prop_area"] = round((gdf_sectores.Area_km2/gdf_sectores.Area_km2.sum())*100,2)
gdf_sectores[['NOMBRE', 'prop_area']].sort_values('prop_area', ascending=False)
Out[ ]:
NOMBRE prop_area
8 Piedras Blancas - Matasano 30.00
2 Las Palmas 21.44
0 Media Luna 12.73
4 El Pan 8.33
7 Mazo 6.76
9 Santa Elena Sector Central 4.36
6 Barro Blanco 4.21
1 Piedra Gorda 4.07
3 El Llano SE 2.86
10 El Placer 2.76
5 El Cerro 2.48
In [ ]:
#grafica de pie por sector
fig, ax = plt.subplots(figsize=(7,7))

# se grafica en ax
ax.pie(gdf_sectores.prop_area,
       labels=list(gdf_sectores.NOMBRE),
       autopct='%1.2f%%')
       
ax.set_title('Proporción de sectores en área de estudio') # se agrega titulo a grafica

# muestra el pie
fig.show()
C:\Users\Sofi\AppData\Local\Temp\ipykernel_16060\1262794506.py:12: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.
  fig.show()
In [ ]:
# para mostrar el area de estudio
gdf_sectores.explore(
     column="prop_area", # coropleta basada en columna "prop_area"
     tooltip=['NOMBRE', 'prop_area'], # muestra "NOMBRE" y proporcion de area en cajetín, cuando se pasa el cursor
     popup=True, # mostrar todos los valores de columna con un clic sobre el polígono
     tiles="CartoDB positron", # usa "CartoDB positron" de mapa base
     cmap="Blues", # usa "Accent" matplotlib para colores
     style_kwds=dict(color="black") # usa borde de polígonos negro
    )
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Con base en la clasificación de coberturas de la tierra por la metodología de de Corine Land Cover Colombia (CLC), Santa Elena se caracteriza por tener el 30,41% de su territorio con plantaciones forestales, seguido de la vegetación secundaria o en transición que ocupa el 18,56%, las instalaciones recreativas con el 13,05% y los pastos limpios con el 11,96% del total del área del corregimiento. A continuación, en la figura se presenta la distribución espacial de las coberturas de la tierra para el corregimiento de Santa Elena.

In [ ]:
#obtener nombres de columnas de la capa de coberturas
gdf_cob.columns
Out[ ]:
Index(['nivel_3', 'Area_ha', 'area_km2', 'cob_equivalente', 'geometry'], dtype='object')
In [ ]:
# Para mostrar las coberturas de la tierra
gdf_cob.explore(
    column="nivel_3", # coropleta basa en columna del nombre de la cobertura
    tooltip=['nivel_3','Area_ha'] , # muestra las coberturas y el area (ha) en el cajetin, cuando se pasa el cursor
    popup=True, # muestra todos los valores de la columna con un clic sobre el polígono
    tiles="CartoDB positron", # usa cartodb positron de mapa base
    cmap="Pastel2", # usa Accent de matplotlib para colores
    style_kwds=dict(color="black") # usa borde de polígono negro
)
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Por otro lado, en la siguiente tabla se muestra el área en hectáreas y en porcentaje de cada una de las categorías de coberturas presentes en el corregimiento.

In [ ]:
# generar dataframe con valores de area: minimo, maximo y suma y cantidad de poligonos por cobertura
cob_res_area = gdf_cob.groupby('nivel_3').agg(num_poli=('nivel_3','count'),  # numero de poligonos por cobertura
                                              area_ha_min=('Area_ha','min'), # area de poligono mas pequeno por cobertura 
                                              area_ha_max=('Area_ha','max'), # area de poligono mas grande por cobertura 
                                              area_ha_tot=('Area_ha','sum')) # area total por cobertura 

cob_res_area['area_porcent'] =  round(cob_res_area.area_ha_tot/cob_res_area.area_ha_tot.sum()*100,2) # porcentaje de area por cobertura 

# muestra tabla generada con anterioridad
cob_res_area
Out[ ]:
num_poli area_ha_min area_ha_max area_ha_tot area_porcent
nivel_3
1.1.1. Tejido urbano continuo 50 1.067845e-06 115.665406 355.497315 4.79
1.1.2. Tejido urbano discontinuo 13 1.991250e-03 86.908197 277.962015 3.75
1.2.1. Zonas industriales o comerciales 1 6.486727e+00 6.486727 6.486727 0.09
1.3.1. Zonas de extracción minera 1 1.883378e+01 18.833785 18.833785 0.25
1.4.1. Zonas verdes urbanas 4 5.158884e-04 0.699386 1.384224 0.02
1.4.2. Instalaciones recreativas 15 2.871610e-03 363.876179 967.973334 13.05
2.3.1. Pastos limpios 19 1.136303e-02 258.805521 886.929691 11.96
2.3.3. Pastos enmalezados 7 2.227007e-02 63.770656 290.281644 3.91
2.4.2. Mosaico de pastos y cultivos 8 6.230543e-07 47.595071 54.315728 0.73
2.4.3. Mosaico de cultivos, pastos y espacios naturales 3 3.196269e+01 89.382673 155.844165 2.10
2.4.4. Mosaico de pastos con espacios naturales 8 1.459699e+01 95.600221 459.071261 6.19
3.1.3. Bosque fragmentado 2 1.071827e+02 125.464992 232.647733 3.14
3.1.4. Bosque de galería y ripario 2 4.069643e-02 48.787450 48.828146 0.66
3.1.5. Plantación forestal 24 5.184306e-03 1126.118101 2255.113382 30.41
3.2.3. Vegetación secundaria o en transición 36 1.183699e-03 266.205561 1376.400409 18.56
3.3.3. Tierras desnudas y degradadas 1 2.767133e+01 27.671330 27.671330 0.37

Para realizar una descripción general de áreas naturales a partir de las cuales se configuran áreas núcleo, se categorizaron las coberturas en naturales y antropizadas; siendo el Bosque de galería, Bosque fragmentado y la Vegetación secundaria o en transición las que corresponden con coberturas naturales, las demás se tomaron como antropizadas.

In [ ]:
# Condicion para llenar columna nueva con categoria Natural
condicion = gdf_cob['nivel_3'].isin(['3.1.4. Bosque de galería y ripario', '3.1.3. Bosque fragmentado', '3.2.3. Vegetación secundaria o en transición'])
In [ ]:
# Se crea campo categ_cob con palabra vacio
gdf_cob['categ_cob'] = 'vacio'

# Se reemplaza vacio por Natural o Antropica segun la condicion
gdf_cob['categ_cob'] = gdf_cob['categ_cob'].mask(condicion, 'Natural').mask(~condicion, 'Antropica')

# Muestra los datos de cinco registros al azar
gdf_cob.sample(5)
Out[ ]:
nivel_3 Area_ha area_km2 cob_equivalente geometry categ_cob
50 3.2.3. Vegetación secundaria o en transición 97.253372 0.972534 Rastrojo alto MULTIPOLYGON (((4723707.632 2253461.982, 47237... Natural
0 1.1.1. Tejido urbano continuo 5.872635 0.058726 Construcciones MULTIPOLYGON (((4723749.181 2244721.402, 47237... Antropica
10 1.4.2. Instalaciones recreativas 176.817912 1.768179 Construcciones MULTIPOLYGON (((4723318.371 2250216.446, 47233... Antropica
94 2.3.1. Pastos limpios 0.011363 0.000114 Pasto manejado MULTIPOLYGON (((4719873.435 2241102.831, 47198... Antropica
76 3.1.5. Plantación forestal 28.309638 0.283096 Bosque plantado MULTIPOLYGON (((4719459.685 2253123.325, 47194... Antropica
In [ ]:
# resumen de area de poligonos
round(gdf_cob.Area_ha.describe(),2)
Out[ ]:
count     194.00
mean       38.22
std        96.29
min         0.00
25%         0.10
50%         4.90
75%        43.76
max      1126.12
Name: Area_ha, dtype: float64

A nivel general los polígonos de coberturas presentan áreas menores 100 hectáreas, con un valor promedio de 38,22 hectáreas, el 50% de los datos se encuentra entre 0.10 y 43.76 hectáreas y existe un polígono con un área de 1126,12 hectáreas. Aunque el área natural es poca, también se puede observar que la mayoría de polígonos tienen áreas menores a 100 hectáreas y siguen distribuciones similares a las del conjunto de datos general, lo que indica que la zona está altamente intervenida, bien sea por uso comercial como cultivos y plantaciones o por uso para vivienda.

In [ ]:
# graficar histograma por area de poligonos juntos y por cobertura
fig,(ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(10, 7))

ax1.hist(
    gdf_cob.Area_ha,
    bins='sturges' # numero de agrupaciones se puede poner un numero o un metodo: 'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges', or 'sqrt'
    )

# agregar linea punteada con valor medio de area de poligonos
ax1.axvline(
    x=gdf_cob.Area_ha.mean(),
    color = 'red', #color de linea
    linestyle='dashed', #estilo de linea
    linewidth= 2, # ancho de linea
    label='media: {:5.2f}'.format(gdf_cob.Area_ha.mean()) # label para linea punteada
)

ax1.set_xlabel('Área (ha)') # nombre eje x
ax1.set_ylabel('Frecuencia') # nombre eje y
ax1.set_title('Histograma de frecuencias')
ax1.legend(loc=0)



# graficar histograma por area de poligonos y categoria natural o antropica
ax2.hist(
    [gdf_cob[gdf_cob['categ_cob']=='Antropica'].Area_ha, gdf_cob[gdf_cob['categ_cob']=='Natural'].Area_ha], # datos para histograma, van entre corchetes para graficar dos variables
    bins='sturges', # numero de agrupaciones se puede poner un numero o un metodo: 'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges', or 'sqrt'
    label=['Antropico', 'Natural'] # label para barras de histograma, van en el mismo orden de las variables a graficar
    )

# agregar linea con valor medio de area de poligonos natural
ax2.axvline(
    x=gdf_cob[gdf_cob['categ_cob']=='Natural'].Area_ha.mean(), # valor de linea punteada
    color = 'green', # color de linea
    linestyle='dashed', # estilo de linea
    linewidth= 1, # ancho de linea
    label='media naturales: {:5.2f}'.format(gdf_cob[gdf_cob['categ_cob']=='Natural'].Area_ha.mean()) # label para leyenda
)

# agregar linea con valor medio de area de poligonos con actividad antropica
ax2.axvline(
    x=gdf_cob[gdf_cob['categ_cob']=='Antropica'].Area_ha.mean(), # valor de linea punteada
    color = 'blue', # color de linea
    linestyle='dashed', # estilo de linea
    linewidth= 1, # ancho de linea
    label='media antropicos: {:5.2f}'.format(gdf_cob[gdf_cob['categ_cob']=='Antropica'].Area_ha.mean()) # label para leyenda
)
ax2.set_xlabel('Área (ha)') # nombre del eje x
ax2.set_ylabel('Frecuencia') # nombre del eje y
ax2.set_title('Histograma por categoria Antropica y Natural')
ax2.legend() # activa la leyenda para que se muestre en la grafica

fig.tight_layout() # ajusta las graficas para que no se sobrepongan la de la izquida con la de la derecha

fig.show()
C:\Users\Sofi\AppData\Local\Temp\ipykernel_16060\3412921827.py:56: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.
  fig.show()

Para validar si el área natural se distribuye de forma uniforme en todos los sectores del corregimiento, se estimó el área natural por corregimiento y se normalizó con el área del mismo.

In [ ]:
# Hacer interseccion entre coberturas y sectores
gdf_cob_sect1 = gdf_cob.overlay(gdf_sectores, how='intersection')
In [ ]:
# hacer copia de gdf interseccion
gdf_cob_sect2 = gdf_cob_sect1.copy()

# separar poligonos
gdf_cob_sect2 = gdf_cob_sect2.explode(ignore_index=True)

# eliminar columnas area_km2 y Area_km2
gdf_cob_sect2 = gdf_cob_sect2.drop(columns=['area_km2', 'Area_km2'])
In [ ]:
# actualizar area en hectareas
gdf_cob_sect2['Area_ha']=gdf_cob_sect2.area/10000

# mostrar los primeros cinco registros
gdf_cob_sect2.head()
Out[ ]:
nivel_3 Area_ha cob_equivalente categ_cob CODIGO NOMBRE prop_area geometry
0 1.1.1. Tejido urbano continuo 0.000003 Construcciones Antropica 90 El Llano SE 2.86 POLYGON ((4723727.308 2244717.410, 4723727.011...
1 1.1.2. Tejido urbano discontinuo 0.010675 Construcciones Antropica 90 El Llano SE 2.86 POLYGON ((4724037.665 2243939.152, 4724027.420...
2 2.3.1. Pastos limpios 36.928303 Pasto manejado Antropica 90 El Llano SE 2.86 POLYGON ((4723830.627 2243151.455, 4723797.566...
3 2.3.1. Pastos limpios 0.002773 Pasto manejado Antropica 90 El Llano SE 2.86 POLYGON ((4724209.415 2243334.665, 4724216.331...
4 2.3.1. Pastos limpios 0.016777 Pasto manejado Antropica 90 El Llano SE 2.86 POLYGON ((4724042.813 2243341.236, 4724062.672...
In [ ]:
# Estimar el area por sector y categoria Antropica o Natural
df = gdf_cob_sect2.pivot_table(
    index='NOMBRE',
    columns='categ_cob',
    values='Area_ha',
    aggfunc='sum'
)

# Renombrar columnas
df=df.rename(index=str, columns={"Antropica":"Antropica_ha",
                        "Natural":"Natural_ha"})

# Obtener proporcion de area por categoria Antropica o Natural
df_2= round(df.div(df.sum(1,numeric_only=True),axis=0)*100, 2)

# Renombrar columnas
df_2=df_2.rename(index=str, columns={"Antropica_ha":"Antropica_prop",
                        "Natural_ha":"Natural_prop"})

# Unir areas y proporciones
df_3 = pd.concat([df,df_2],axis=1)
In [ ]:
# Convertir indices en columnas
df_3 = df_3.reset_index()

# Hacer copia del gdf sectores
gdf_sectores_2 = gdf_sectores.copy()

# Unir atributos del df3 que tiene areas con gdf sectores 2
gdf_sectores_2 = gdf_sectores_2.merge(df_3, on='NOMBRE')
In [ ]:
# Para mostrar la tabla de mayor a menor proporcion de area con cobertura natural
gdf_sectores_2.sort_values('Natural_prop', ascending=False)
Out[ ]:
CODIGO NOMBRE Area_km2 geometry prop_area Antropica_ha Natural_ha Antropica_prop Natural_prop
4 90 El Pan 6.177280 MULTIPOLYGON (((4722479.719 2242971.538, 47224... 8.33 389.427729 228.300225 63.04 36.96
1 90 Piedra Gorda 3.015669 MULTIPOLYGON (((4724402.163 2246891.858, 47243... 4.07 211.420296 90.146639 70.11 29.89
10 90 El Placer 2.043471 MULTIPOLYGON (((4724476.337 2245612.042, 47244... 2.76 146.529902 57.817215 71.71 28.29
7 90 Mazo 5.011353 MULTIPOLYGON (((4724668.157 2249538.570, 47247... 6.76 363.221696 137.913648 72.48 27.52
8 90 Piedras Blancas - Matasano 22.246690 MULTIPOLYGON (((4725002.779 2249681.098, 47250... 30.00 1646.255420 578.413610 74.00 26.00
2 90 Las Palmas 15.901717 MULTIPOLYGON (((4720296.019 2242382.963, 47202... 21.44 1215.132549 375.039200 76.42 23.58
0 90 Media Luna 9.442278 MULTIPOLYGON (((4721914.421 2249402.701, 47219... 12.73 814.059201 130.168583 86.21 13.79
5 90 El Cerro 1.840583 MULTIPOLYGON (((4725035.128 2244293.242, 47250... 2.48 165.398720 18.659622 89.86 10.14
3 90 El Llano SE 2.119133 MULTIPOLYGON (((4722479.719 2242971.538, 47225... 2.86 192.902305 19.011031 91.03 8.97
9 90 Santa Elena Sector Central 3.230458 MULTIPOLYGON (((4723199.042 2245378.807, 47232... 4.36 304.736145 18.309687 94.33 5.67
6 90 Barro Blanco 3.123775 MULTIPOLYGON (((4725225.297 2249434.118, 47252... 4.21 308.280637 4.096828 98.69 1.31
In [ ]:
#Se muestra el mapa de coropletas
gdf_sectores_2.explore(
    column="Natural_prop", # coropleta basa en columna del proporcion de area natural
    tooltip=['NOMBRE','Natural_prop'], # muestra las proporciones de coberturas con el nombre del sector en el cajetin, cuando se pase el cursor
    popup=True, # muestra todos los valores de la columna con un clic sobre el polígono
    tiles="CartoDB positron", # usa cartodb positron de mapa base
    cmap="Greens", # usa Accent de matplotlib para colores
    style_kwds=dict(color="black") # usa borde de polígono negro
)
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Con base en los resultados, el sector El Pan, localizado en el sur del corregimiento de Santa Elena, presenta el mayor porcentaje de área natural respecto a los demás, ya que las coberturas naturales cubren cerca del 37% del total del área.

Métodos¶

Con el propósito de evaluar la conectividad ecológica en el corregimiento de Santa Elena, se realizaron los siguientes pasos:

  1. Definición de las métricas de paisaje estructural
  2. Definición de los núcleos de conservación a conectar
  3. Elaboración de mapas de fricción para el desplazamiento de las especies
  4. Modelamiento de la red de conectividad ecológica

Definición de las métricas de paisaje estructural¶

Las métricas del paisaje cuantifican el patrón del paisaje únicamente dentro del límite establecido. En este trabajo se calcularon cinco métricas de paisaje, correspondientes a:

  • Índice de forma media (MSI): Calcula la complejidad de la forma media de los parches en comparación con una forma estándar, como sería la circunferencia en el entorno vectorial i el pixel en el entorno raster. La forma de un parche está caracterizada por la longitud de sus bordes. Se interprea que, si los valores son iguales a 1, los patrones de forma son circulares y se incrementa al aumentar la irregularidad de la forma del parche (Britto, G. 2021).
  • Número de parches (NP): Conjunto de polígonos pertenecientes a una clase (Monedero & Gutiérrez, 2001). Se utiliza también como índice de heterogeneidad y como base para el cálculo de otras métricas.
  • Área total: Extensión total del parche
  • Área interior: Buffer interior del parche
  • Distancia entre parches: Medida simple de aislamiento entre parches. La distancia al vecino más cercano se define utilizando la distancia euclidiana simple como la distancia mpas corta en línea recta entre el parche focal y su vecino más cercano de la misma clase, basado en la distancia entre los centroides de cada uno de los parches.

Definición de núcleos de conservación a conectar¶

Según Colorado et al., (2017) la definición y selección de núcleos para la conservación es parte fundamental del diseño de redes de conectividad, ya que en estos núcleos es donde se considera qye están presentes la mayoría de las comunidades, especies y demás recursos naturales de interés para la conservación. Por otro lado, Kattan (2002) señala que el área, borde y grado de aislamiento son los principales causantes de la extinción de especies en fragmentos de bosque, debido a esto, los criterios para la selección de los núcleos de conservación a conectar se basaron en las métricas definidas anteriormente, considerando que estas se relacionan estrechamente con la funcionalidad ecosistémica. Para esto se identificaron inicialmente los fragmentos de bosques fragmentados, bosque de galería y/o ripario y la vegetación secundaria o en transición, además se tuvo en cuenta que, el área total de los fragmentos fuera mayor a 5,0 ha. Posteriormente se eligieron aquellos núcleos que tuvieran un área interior mayor a 1,0 ha. Así como lo mencionan Colorado at al., (2017) áreas de interior como la sugerida, permiten tener una mayor funcionalidad ecosistémica oara poblaciones de fauna y flora con requerimientos de interior de bosque, así como el sostenimiento a largo plazo de procesos biológicos relevantes. Finalmente, se seleccionaron aquellos núcleos cuyo MSI mostraran formas redondeadas o casi redondeadasm con algunos brazos de vegetación que facilitaran la conectividad con otros núcleos (Colorado et al.,2017).

Elaboración del mapa de fricción para el desplazamiento de las especies¶

En este paso se construyeron dos mapas de fricción, los cuales se relacionan con las limitaciones que la matriz del paisaje presenta para el desplazamiento de los individuos (Colorado et al.,2017). Para ello se realizó una modificación en las variables propuestas por Colorado et al.,(2017), en el cual se evaluaron cuatro (4) criterios correspondientes a coberturas, distancia a vías, distancia a drenajes y áreas núcleo, tal y como se muestra a continuación:

tabla

Como insumos de salida se tienen dos mapas de fricción, el primero de ellos corresponde con la suma simple de las variables evaluadas. Por su parte, el segundo mapa de fricción se realizó mediante un Proceso de Análisis Jerárquico (AHP-Analitycal hierarchy process) para la toma de decisiones, desarrollado por Thomas L. Saaty (1980).

En este proceso se consultó a tres (3) profesionales: 1 biólogo flora, 1 ecólogo y 1 docente de ecología del paisaje.

La ponderación de las variables se realizó con base en el análisis multicriterio (variable), teniendo en cuenta una matriz de doble entrada. Los profesionales realizaron la calificación con base en el aporte de los criterios a la restricción o fricción del movimiento de las especies en el corregimiento de Santa Elena, Antioquia; entendiendo que:

  • Si la variable fila prima sobre la variable columna la calificación es un número entero (1, 3, 5, 7 o 9)
  • Si la variable columna prima sobre la variable fila, la califación es una fracción (1/1, 1/3, 1/5, 1/7 o 1/9)

A modo de ejemplo, se presenta la siguiente tabla:

tabla

Por otro lado, la escala numérica, su importancia y explicación se resenta a continuación:

tabla

Modelamiento de la red de conectividad ecológica¶

Para generar la red de conectividad entre los núcleos de conservación definidos previamente, se utilizó el método de la ruta de menor costo para el desplazamiento. Para ello se utiliza un modelo costo-distancia, empleando funciones de Python con las cuales se identifican las rutas de conectividad entre los centroides de los fragmentos (núcleos) sobre cada uno de los mapas de fricción definidos. Uitlizando cada núcleo como punto de origen a conectar sobre la superficie de costos creadam se generan redes de conectividad desde los núcleos origen hacia los núcleos destinos por las rutas con menor dificultad para el desplazamiento. Lo anterior implica que la ruta diseñada corresponda con aquella que posee el menor valor acumulado de desplazamiento sobre la superficie de costos. Una vez obtenidas las rutas de conectividad, se cruzaron con la capa de coberturas de la tierra, previamente reclasificadas, para luego ser comparadas con los resultados obtenidos por Colorado et al., (2017).

Resultados y discusión¶

Definición de las métricas de paisaje estructural¶

A continuación se presentan las métricas de paisaje estructural definidas.

In [ ]:
# Convertir las coberturas a raster
from rasterio.features import rasterize
cob_raster=gdf_cob

Definición de núcleos de conservación a conectar¶

Se definieron XXX fragmentos de bosques o vegetación secundaria como núcleos de conservación a conectar, las áreas de estos núcleos oscilaron entre XX y XXX ha, con un promedio de XXX +- XXX ha. Por otro lado, siguiendo los criterios de priorización se obtuvieron XXX núcleos para conservación en el corregimiento de Santa Elena, los cuales se presentan en la siguiente figura.

In [ ]:
# Mostrar los nucleos de conservacion a conectar

Estos XXX núcleos presentaron, en conjunto, un total de XXXXX ha, de las cuales XXXXX ha corresponden con áreas de interior y oscilaron en tamaños desde XXXX hasta XXXX ha, con un promedio de XXX +- XXX ha. Finalmente el índice de forma fluctuó entre XXXX y XXXX con un promedio de XXXX +- XXXX ha.

Elaboración del mapa de fricción para el desplazamiento de las especies¶

Mapa de fricción: suma simple¶

El mapa de fricción correspondiente a la suma simple de las variables evaluadas se muestra a continuación.

In [ ]:
### Mostrar el mapa de friccion con suma simple

Con base en lo anterior se evidencia que, las coberturas que imponen mayor restricción al desplazamiento de las especies corresponden con los territorios artificializados y a aquellas zonas que se encuentran cercanas a las vías.

Mapa de fricción: suma ponderada¶

La matriz resultante y los valores de ponderación de cada una de las variables, se muestra a continuación

tabla

En este caso, se le otorgó mayor peso a las áreas núcleos (50%), seguido de las coberturas (27%), la distancia a la red hídrica (17%) y finalmente la distancia a las vías (5%)

Con base en lo anterior, se calcula entonces la nueva superficie de fricción como sigue:

In [ ]:
# Mostrar el mapa de superficie de friccion con suma ponderada

Teniendo en cuenta lo anterior se tiene que las coberturas boscosas y de mayor estado sucesional evidencian una menor restricción a la movilidad de las especies, lo contrario ocurre con las áreas artificializadas como los tejidos urbanos, vías, instalaciones recreativas, entre otras.

Ahora bien, haciendo un cruce entre el mapa de fricción y los sectores del corregimiento de Santa Elena se tiene que, el sector conocido como XXXXX presenta mayor área de fricción con los dos mapas de fricción determinados, esto indica el alto grado de intervención. Por otro lado, el sector con menor restricción al movimiento de las especies fue XXXX.

Modelamiento de la red de conectividad ecológica¶

La red de conectividad ecológica obtenida para el corregimiento de Santa Elena se presenta a continuación:

In [ ]:
# Mostrar los corredores obtenidos

Conclusiones¶

Referencias¶

  • Alcaldía de Medellín. Propuesta de gestión integral de la biodiversidad y los servicios ecosistémicos para Medellín. Síntesis del documento técnico de soporte; 2014. 242 p.
  • Britto, G. (2021). Análisis de métricas de paisaje en el departamento del Amazonas entre los años 2002-2018. Universidad Antonio Nariño. Bogotá. pp 1-46
  • Colorado, Z, Vásquez J & Mazo I. (2017). Modelo de conectividad ecológica de fragmentos de bosque andino en Santa Elena (Medellín, Colombia). Acta biológica colombiana, 22 (3), 379-393.
  • Grupo HTM-Municipio de Medellín. Plan Especial de Ordenamiento Corregimental de Santa Elena. Fase Diagnóstica. Tomos I-IV. Sin publicar
  • Kattan GH. Fragmentación: patrones y mecanismos de extinción de especies. En: Ecología y conservación de Bosques Neotropicales. Guariguata MR, Katan GH, editores. EULAC/GTZ. Primera edición. Ediciones UR. Cartago, CR; 2002. p. 561-590.
  • Monedero , C., & Gutiérrez, M. (2001). Análisis cuantitativo de los patrones espaciales de la cobertura vegetal en el geosistemamontañoso tropical El Ávila. ECOTROPICOS 14, 19-30.
  • Saaty, T. (1980, November). The analytic hierarchy process (AHP) for decision making. In Kobe, Japan (Vol. 1, p. 69).
  • Wu, Q., (2020). geemap: A Python package for interactive mapping with Google Earth Engine. The Journal of Open Source Software, 5(51), 2305. https://doi.org/10.21105/joss.02305